package com.ruoyi.wms.domain;

import java.math.BigDecimal;
import java.util.Date;

import com.alibaba.excel.annotation.ExcelProperty;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.ToString;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.core.annotation.Excel;
import com.ruoyi.common.core.web.domain.BaseEntity;

/**
 * 盘点明细对象 wms_inventory_item
 *
 * @author ruoyi
 * @date 2025-11-19
 */
@Data
@ToString
@ApiModel(value = "盘点明细对象", description = "盘点明细对象")
public class InventoryItem {

    private static final long serialVersionUID = 1L;

    /**
     * 明细记录ID（主键）
     */
    private String id;

    /**
     * 商品编码
     */
    @ApiModelProperty(value = "商品编码")
    private String productCode;

    /**
     * 商品名称
     */
    @ApiModelProperty(value = "商品名称")
    private String productName;

    /**
     * 规格型号
     */
    @ApiModelProperty(value = "规格型号")
    private String specification;

    /**
     * 单位（如：个，台，箱）
     */
    @ApiModelProperty(value = "单位如=：个，台，箱")
    private String unit;

    /**
     * 账面数量
     */
    @ApiModelProperty(value = "账面数量")
    private double bookQuantity;

    /**
     * 实盘数量（盘点员填写）
     */
    @ApiModelProperty(value = "实盘数量盘=点员填写")
    private double physicalQuantity;

    /**
     * 单位成本（用于计算差异金额）
     */
    @ApiModelProperty(value = "单位成本用=于计算差异金额")
    private double unitCost;

    /**
     * 实际重量
     */
    @ApiModelProperty(value = "实际重量")
    private double physicalWeight;

    /**
     * 账目重量
     */
    @ApiModelProperty(value = "账目重量")
    private double bookWeight;

    /**
     * 差异原因（如：盘点错误、收发错误、破损、丢失、盘盈）
     */
    @ApiModelProperty(value = "差异原因如=：盘点错误、收发错误、破损、丢失、盘盈")
    private String differenceReason;

    /**
     * 盘点人
     */
    @ApiModelProperty(value = "盘点人")
    private String countedBy;

    /**
     * 盘点时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @ApiModelProperty(value = "盘点时间yyyy-MM-dd")
    private Date countedTime;

    /**
     * 入库库位库位码
     */
    @ApiModelProperty(value = "入库库位库位码")
    private String areaCode;

    /**
     * 入库库位名称
     */
    @ApiModelProperty(value = "入库库位名称")
    private String areaName;

    /**
     * 录入人
     */
    @ApiModelProperty(value = "录入人")
    private String createUser;

    /**
     * 录入日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @ApiModelProperty(value = "录入日期yyyy-MM-dd")
    private String createDate;

    /**
     * 盘点批次号
     */
    @ApiModelProperty(value = "盘点批次号")
    private String batchNum;

    /**
     * 计量方式
     */
    @ApiModelProperty(value = "计量方式")
    private String measurementMethod;
    @ExcelProperty("备注")
    @ApiModelProperty(value = "备注")
    private String remark;

    @ApiModelProperty(value = "盘点状态")
    private boolean status;

}
